# encoding: utf-8
#  创建日期：2017.11.22
#  作者：zhangjian
#  摘要：
require_relative '../lib/common' # 加载lib文件夹内所有模块

#
#  执行步骤的类
#
class MyTools
  def initialize(config) # 创建对象时调用,可接收new时的参数
    Log.info('------------ MyTools.initialize Start ------------')
    @ctrl_web = CtrlWeb.new(config['CtrlIotp']) # 创建iotp对象
  end

  # 运行入口程序
  def run
    Log.info('------------ MyTools.run Start ------------')
    cnt_num = 0
    loop do # 死循环
      Log.info("cnt_num:#{cnt_num += 1}...")
      #https://jzchangmark.wordpress.com/2015/03/16/selenium-%E4%BD%BF%E7%94%A8-css-locator-%E5%AE%9A%E4%BD%8D%E5%85%83%E4%BB%B6/
      #https://github.com/SeleniumHQ/selenium/wiki/Ruby-Bindings
      #http://www.rubydoc.info/gems/selenium-webdriver/0.0.28/Selenium/WebDriver/Find
      @ctrl_web.do_login
      # overview = IotpTest::Overview.new(@ctrl_web.driver)
      # overview.click_device_state('factory')
      @ctrl_web.click_top_menu('我的设备')

      # Sensor.add_group('aaa')
      puts('enter...')
      gets
      break
    end
  end

  # 关闭类变量里面初始化的资源
  def close
    Log.info('------------ MyTools.close Start ------------')
    @ctrl_web.close
  end
end

#####################   程序入口   #####################
tools = nil # 声明工具对象
begin
  Dir.mkdir('log') unless File.directory?('log') # 自动创建log目录
  Log.set_log_path("log/#{File.basename(__FILE__)}#{Time.now.strftime('_%Y.%m.%d')}.log") # 写入日志文件，
  Log.info('----------------new run----------------')
  tools = MyTools.new(YAML.safe_load(File.open('config.yaml'))) # 创建对象,有需要可以传递参数，在类里面统一调用
  tools.run # 运行
rescue Interrupt # Ctrl+C的异常
  Log.info('Ctrl+C')
rescue => e # 捕获除开Ctrl+C以外的异常
  Log.error("tools : #{e.class}, #{e.message}")
end
# 无论异常或是正常结束都需要释放资源
tools.close unless tools.nil?
